/*
 *  Clear.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __Clear__
#define __Clear__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Render)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented clear interface.
	class Clear: public Operation
	{
	public:
		enum TYPE
		{
			CT_DEPTH = 0x00000100,
			CT_COLOR = 0x00004000,
		};

	public:		
		// constructor
		Clear(U32 flags=CT_COLOR|CT_DEPTH, const Vector4&color=Vector4(0,0,0,0), F32 depth=1.0);
		
		// destructor
		virtual ~Clear();

	private:
		// implement the render operation
		VOID operator() (class Context*rc);

	private:
		U32 mFlags;
		Vector4 mColor;		
		F32 mDepth;
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<Clear>ClearPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Clear__

//////////////////////////////////////////////////////////////////////////